home *** CD-ROM | disk | FTP | other *** search
/ Aminet 30 / Aminet 30 (1999)(Schatztruhe)[!][Apr 1999].iso / Aminet / comm / ums / umsrfc1_0.lha / UMS / Rexx / MakeUser.rexx < prev    next >
OS/2 REXX Batch file  |  1996-01-13  |  3KB  |  138 lines

  1. /* ------------------------------------------------------------------------
  2.    :Program.    MakeUser.rexx
  3.    :Contents.   create a new UMS user
  4.    :Author.     Kai Bolay [kai]
  5.    :Address.    Snail Mail:
  6.    :Address.    Hoffmannstraße 168
  7.    :Address.    D-71229 Leonberg        EMail: kai@studbox.uni-stuttgart.de
  8.    :History.    v1.0 [kai] 14-Oct-95
  9.    :History.    v1.1 [kai]  3-Nov-95 added PASSWORD
  10.    :Version.    $VER: MakeUser.rexx 1.1 (3.11.95)
  11.    :Copyright.  Public Domain
  12.    :Language.   ARexx
  13.    :Translator. RexxMast
  14. ------------------------------------------------------------------------ */
  15.  
  16. options results
  17.  
  18. signal on BREAK_C
  19. signal on BREAK_D
  20. signal on BREAK_E
  21. signal on BREAK_F
  22. signal on ERROR
  23. signal on HALT
  24. signal on IOERR
  25. signal on SYNTAX
  26.  
  27. /*** Init ***/
  28.  
  29. call addlib("rexxdossupport.library", 0, -30)
  30. call addlib("ums.library", 0, -210, 11)
  31. call UMSInitConsts()
  32.  
  33. /*** Arguments ***/
  34.  
  35. parse SOURCE . " " . " " ProgramName .
  36. ArgsTemplate = "NAME/A,PWD,SERVER/K,USER/A,ALIASES/M,SYSOP/S,EXPORTER/S,READACCESS/K,WRITEACCESS/K,NETACCESS/K,IMPORT/K,EXPORT/K,PASSWORD/K,OPTIONS/K,ACTIONCOMMAND/K"
  37. args.SERVER = ""
  38. args.PWD = ""
  39.  
  40. parse arg arguments
  41. if strip(arguments) = '?' then do
  42.   call writech(STDOUT, ArgsTemplate || ': ')
  43.   arguments = readln(STDIN)
  44. end; else nop
  45. if ~ReadArgs(arguments,ArgsTemplate,"args.") then do
  46.   say Fault(RC, ProgramName)
  47.   exit 10
  48. end; else nop
  49.  
  50. /*** Login ***/
  51.  
  52. account = UMSLogin(args.name, args.pwd, args.server)
  53. if account = 0 then do
  54.   say "unable to login."
  55.   exit 10
  56. end
  57.  
  58. /*** Do the magic ***/
  59.  
  60. if args.SYSOP & args.EXPORTER then do
  61.   say "SYSOP and EXPORTER are mutally exclusive!"
  62.   rc = 20; call logout
  63. end
  64.  
  65. kind = "USER"
  66. if args.SYSOP    then kind = "SYSOP"
  67. if args.EXPORTER then kind = "EXPORTER"
  68.  
  69. if ~UMSCreateUser(account,args.USER, kind) then do
  70.   call CheckErr
  71.   rc = 20; call logout
  72. end
  73.  
  74. do i = 0 TO args.ALIASES.COUNT-1
  75.   if ~UMSCreateAlias(account,args.USER,args.ALIASES.i) then do
  76.     call CheckErr
  77.     rc = 20; call logout
  78.   end
  79. end
  80.  
  81. vars.0 = OPTIONS
  82. vars.1 = READACCESS
  83. vars.2 = WRITEACCESS
  84. vars.3 = NETACCESS
  85. vars.4 = IMPORT
  86. vars.5 = EXPORT
  87. vars.6 = ACTIONCOMMAND
  88. vars.7 = PASSWORD
  89. vars.count = 7
  90.  
  91. do i = 0 to vars.count-1
  92.   if symbol("args."vars.i) = "VAR" then do
  93.     if ~UMSWriteConfig(account,vars.i,value("args."vars.i),args.user) then do
  94.       call CheckErr
  95.       rc = 20; call logout
  96.     end
  97.   end
  98. end
  99.  
  100. /*** Final cleanup ***/
  101.  
  102. BREAK_C:
  103. BREAK_D:
  104. BREAK_E:
  105. BREAK_F:
  106.  
  107. RC = 0
  108.  
  109. ERROR:
  110. HALT:
  111. IOERR:
  112. SYNTAX:
  113.  
  114. IF RC ~= 0 THEN DO
  115.   SAY "Error: " rc errortext(rc) "Line" sigl
  116.   rc = 20
  117. END
  118.  
  119. /*** Logout ***/
  120.  
  121. LOGOUT:
  122.  
  123. if account ~= 0 then do
  124.   call UMSLogout(account)
  125.   account = 0
  126. end
  127.  
  128. exit rc
  129.  
  130. /*** Support ***/
  131.  
  132. CheckErr: procedure expose account
  133.   err = UMSErrNum(account)
  134.   if err ~= 0 then do
  135.     say "UMS Error #" || err || ": " || UMSErrTxt(account)
  136.   end
  137. return
  138.